package com.gitee.mp.extend;

import com.gitee.mp.core.interceptor.InterceptorContext;

import java.lang.reflect.Method;

/**
 * @author hongda.li
 */
public interface MapperInterceptor {
    /**
     * 拦截器顺序
     *
     * @return 顺序
     */
    int order();

    /**
     * 拦截的方法名称
     *
     * @return 方法名称
     */
    boolean supported(Method method);

    /**
     * 拦截的目标 Mapper 类型
     *
     * @return 是否执行拦截
     */
    boolean supported(Class<?> mapper);

    /**
     * 执行逻辑
     *
     * @param context 拦截上下文
     */
    void intercept(InterceptorContext context);
}
